/*
 * @Description: 操作权限处理
 * @Author: Boide
 * @Date: 2021-09-07 10:24:57
 * @LastEditors: guiyi@hongyi.tech
 * @LastEditTime: 2021-09-07 18:22:15
 */
import store from '@/store'
import { getIntersection } from '@/utils/tools'

export default {
  inserted (el, { value }) {
    // 获取拥有的所有权限
    const permissions = store.getters && store.getters.permissions
    if (value) {
      // 使其支持单个，或者多个，可放在数组中，也可直接放在字符串中
      let permissionFlag = Array.isArray(value) && !!value.length ? value : [value]
      // 必须拥有多个权限中的所有才可
      const hasPermissions = getIntersection(permissions, permissionFlag).length === permissionFlag.length
      if (!hasPermissions) {
        // 做一个判断处理，若是权限在switch上面则将其设置为disabled,并且删除其事件
        if (el.className.indexOf('el-switch') !== -1) {
          el.setAttribute('class', `${el.className} is-disabled`)
          el.firstChild.disabled = true
          // 克隆元素信息，不会把事件进行克隆
          const cloneNode = el.cloneNode(true)
          if (el.parentNode) {
            el.parentNode.appendChild(cloneNode)
            el.parentNode.removeChild(el)
          }
        } else {
          el.parentNode && el.parentNode.removeChild(el)
        }
      }
    } else {
      throw new Error(`请设置操作权限标签值`)
    }
  }
}
